﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _5deOro.Dominio;

namespace _5deOro.Interfaz
{
    public partial class IngresoNumeros : Form
    {

        List<int> numeros = new List<int>();

        //private static IngresoNumeros ingresoNumeros;

        //public static IngresoNumeros GetIngresoNumeros()
        //{
        //    if (ingresoNumeros == null) ingresoNumeros = new IngresoNumeros();

        //    return ingresoNumeros;
        //}
        
        public IngresoNumeros()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        public void txtNro_focused(object sender, EventArgs e) 
        {
            MaskedTextBox t = (MaskedTextBox)sender;
            int caseSwitch = t.TabIndex;
            switch (caseSwitch) 
            {
                case 1:
                    txtNro1.SelectAll();
                    break;
                case 2:
                    txtNro2.SelectAll();
                    break;
                case 3:
                    txtNro3.SelectAll();
                    break;
                case 4:
                    txtNro4.SelectAll();
                    break;
                case 5:
                    txtNro5.SelectAll();
                    break;
            }
        }

        public void txtNro_leave(object sender, EventArgs e) 
        {
            MaskedTextBox t = (MaskedTextBox)sender;
            try
            {
                int number = Int32.Parse(t.Text.ToString());

                int respuesta = Juego5deOro.ValidarIngresos(numeros, number);

                switch (respuesta)
                {
                    case 0:
                        //Sin error
                        numeros.Add(number);
                        break;
                    case 1:
                        MessageBox.Show("El número debe estar entre 1 y 44");
                        t.Text = "";
                        t.Focus();
                        break;
                    case 2:
                        MessageBox.Show("El número debe ser único en la apuesta");
                        t.Text = "";
                        t.Focus();
                        break;
                }
 
            }
            catch (Exception) { }
        }

        //Toma los datos del formulario y los devuelve al dominio del Juego5deOro
        public string ObtenerApuesta()
        {
            
            char Revancha;
            int MontoApostado;

            if (checkBox1.Checked)
            {
                Revancha = 'S';
                MontoApostado = 35;
            }
            else
            {
                Revancha = 'N';
                MontoApostado = 25;
            }
            string apuesta = txtNro1.Text.ToString() + "-" + txtNro2.Text.ToString() + "-" + 
                txtNro3.Text.ToString() + "-" + txtNro4.Text.ToString() + "-" + 
                txtNro5.Text.ToString() + ";" + Revancha + ";" + MontoApostado.ToString();
            return apuesta;
            
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void pictureBox4_Click(object sender, EventArgs e)
        {

        }

        public void LimpiarFormulario() 
        {
            txtNro1.Text = "";
            txtNro2.Text = "";
            txtNro3.Text = "";
            txtNro4.Text = "";
            txtNro5.Text = "";
            checkBox1.Checked = false;
            numeros.Clear();
        }

        public bool EsValidaApuesta() 
        {
            bool valido = true;
            if (numeros.Count() < 5) 
            {
                MessageBox.Show("Debe ingresar 5 números para realizar la jugada");
                valido = false;
            }
            return valido;
        }
    }
}
